#
# Copyright (c) 2013-2020,2025 Red Hat.
# Copyright (c) 2000,2003,2004 Silicon Graphics, Inc.  All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.
#

TOPDIR = ../..
include $(TOPDIR)/src/include/builddefs
-include ./GNUlocaldefs

CPMDAS = root pmcd \
	linux_proc linux_xfs linux_zfs linux \
	darwin_proc darwin freebsd netbsd aix \
	solaris windows \
	sample simple trivial sendmail mailq txmon \
	apache cisco trace shping mounts weblog \
	mmv lmsensors process roomtemp summary etw \
	lustrecomm infiniband logger bash systemd \
	gfs2 jbd2 cifs nvidia resctrl perfevent \
	dm pipe openbsd docker smart podman statsd \
	hacluster linux_sockets denki bpf overhead \
	farm amdgpu

PLPMDAS = bonding netfilter zimbra postgresql \
	dbping memcache mysql oracle kvm \
	named news pdns samba dtsrun postfix gpsd \
	rsyslog snmp nginx \
	ds389 ds389log activemq lustre gpfs slurm \
	bind2 redis nutcracker

PYPMDAS = bcc gluster zswap unbound mic haproxy \
	libvirt lio openmetrics opentelemetry \
	elasticsearch bpftrace mssql netcheck \
	rabbitmq openvswitch nfsclient mongodb \
	uwsgi rocestat hdb

SUBDIRS = $(CPMDAS) $(PLPMDAS) $(PYPMDAS)
LDIRT = pmcd.conf

ifneq ("$(wildcard $(TOPDIR)/src/include/pcp/config.h)","")
HAVE_UNIX_DOMAIN_SOCKETS = $(shell grep 'define HAVE_STRUCT_SOCKADDR_UN' $(TOPDIR)/src/include/pcp/config.h >/dev/null && echo yes)
else
    # after make clean in src/include/pcp, config.h is gone ... punt
    HAVE_UNIX_DOMAIN_SOCKETS = no
endif

default :: default_pcp

default_pcp : $(SUBDIRS)
	@echo '# Performance Metrics Domain Specifications' > pmcd.conf
	@echo '# ' >> pmcd.conf
	@echo '# This file is automatically generated during the build' >> pmcd.conf
	@echo '# Name  Id      IPC     IPC Params      File/Cmd' >> pmcd.conf
	$(SUBDIRS_MAKERULE)
	@echo >> pmcd.conf
	@echo '[access]' >> pmcd.conf
	@echo 'disallow ".*" : store;' >> pmcd.conf
	@echo 'disallow ":*" : store;' >> pmcd.conf
ifeq "$(HAVE_UNIX_DOMAIN_SOCKETS)" "yes"
	@echo 'allow "local:*" : all;' >> pmcd.conf
else
	@echo 'allow "localhost" : all;' >> pmcd.conf
endif

install :: install_pcp

install_pcp :: $(SUBDIRS)
	$(SUBDIRS_MAKERULE)

install_pcp :: default_pcp
	$(INSTALL) -m 755 -d `dirname $(PCP_PMCDCONF_PATH)`
	$(INSTALL) -m 644 pmcd.conf $(PCP_PMCDCONF_PATH)
	$(INSTALL) -m 644 indom.conf $(PCP_ETC_DIR)/pcp/indom.conf

include $(BUILDRULES)
